<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="../公用CSS文件/all.css" />
    <script type="text/javascript" src="../js/jquery.min.js"></script> 	<script type="text/javascript" src="../js/js.js"></script>
    <meta charset="utf-8">
    <style type="text/css">
        table{min-width:80%}
    </style>
</head>
<body>

<div class="dt">数据库技术相关概念</div>
<ul>
    <table>
        <tr>
            <th>概念</th><th>说明</th>
        </tr>
        <tr>
            <td>数据库技术</td>
            <td>数据库技术是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法，并利用这些理论来实现对数据库中的数据进行处理、分析和理解的技术</td>
        </tr>
        <tr>
            <td>数据库</td>
            <td>数据库（database）是存储和管理数据的软件系统，是各种数据库对象的集合。它的作用是存储数据、管理数据和检索数据</td>
        </tr>
    </table>
</ul>

<div class="dt">数据库技术发展</div>
<ul>
    <div class="ltable showimg">数据库技术发展的三个阶段</div>
    <div class="img">
        <table>
            <tr>
                <th>阶段</th><th>说明</th>
            </tr>
            <tr>
                <td>人工管理阶段</td>
                <td>20世纪50年代以前，计算机主要用于数值计算。<br>从硬件看，外存只有纸带、卡片、磁带，没有直接存取设备；从软件看，没有操作系统以及管理数据的软件；从数据看，数据量小、数据无结构，由用户直接管理，
                    <!--且数据间缺乏逻辑组织，数据依赖于特定的应用程序，缺乏独立性-->
                </td>
            </tr>
            <tr>
                <td>文件系统阶段</td>
                <td>50年代后期到60年代中期，出现了磁鼓、磁盘等数据存储设备，新的数据处理系统迅速发展起来。<br>这种数据处理系统是把计算机中的数据组织成相互独立的数据文件，系统可以按照文件的名称对其进行访问，对文件中的记录进行存取，并可以实现对文件的修改、插入和删除。这就是文件系统</td>
            </tr>
            <tr>
                <td>数据库系统阶段</td>
                <td>60年代后期，出现了数据库这样的数据管理技术<br>数据库的特点是数据不再只针对某一特定应用，而是面向全组织，具有整体的结构性、共享性高、冗余度小，具有一定的程序与数据间的独立性，并且实现了对数据进行统一的控制</td>
            </tr>
        </table>
    </div>
</ul>

<div class="dt">数据模型</div>
<ul>
    <div class="ltable showimg">数据模型概念</div>
    <div class="img">
        <li>数据模型（Data Model）是数据特征的抽象。数据（Data）是描述事物的符号记录，模型（Model)是现实世界的抽象。数据模型从抽象层次上描述了系统的静态特征、动态行为和约束条件，为数据库系统的信息表示与操作提供了一个抽象的框架。数据模型所描述的内容有三部分：数据结构、数据操作和数据约束</li>
    </div>

    <div class="ltable showimg">数据模型组成</div>
    <div class="img">
        <table>
            <tr>
                <th>要素</th>
                <th>说明</th>
            </tr>
            <tr>
                <td>数据结构</td>
                <td>主要描述数据的类型、内容、性质以及数据间的联系等，是目标类型的集合，数据结构是数据模型的基础</td>
            </tr>
            <tr>
                <td>数据操作</td>
                <td>数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式。它是操作算符的集合，包括若干操作和推理规则，用以对目标类型的有效实例所组成的数据库进行操作</td>
            </tr>
            <tr>
                <td>数据约束</td>
                <td>数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、他们之间的制约和依存关系，以及数据动态变化的规则，以保证数据的正确、有效和相容</td>
            </tr>
        </table>
    </div>

    <div class="ltable showimg">三种数据模型</div>
    <div class="img">
        <table>
            <tr>
                <th>模型</th><th>说明</th>
            </tr>
            <tr>
                <td>层次模型</td>
                <td>层次数据模型是用树状（层次）结构来组织数据的数据模型</td>
            </tr>
            <tr>
                <td>网状模型</td>
                <td>用有向图表示实体和实体之间的联系的数据结构模型称为网状数据模型</td>
            </tr>
            <tr>
                <td>关系模型</td>
                <td>使用二维表格表示实体和实体之间关系的数据模型称之为关系数据模型</td>
            </tr>
        </table>
    </div>

    <div class="ltable showimg">层次模型概述</div>
    <div class="img">
        <li>1. 层次模型的基本结构就是一颗倒立生长的树</li>
        <li>2. 整个模型中有且仅有一个节点没有父节点，其余的节点必须有且仅有一个父节点，但是所有的节点都可以不存在子节点</li>
        <li>3. 所有的子节点不能脱离父节点而单独存在，也就是说如果要删除父节点，那么父节点下面的所有子节点都要同时删除，但是可以单独删除一些叶子节点</li>
        <li>4. 每个记录有且仅有一条从父节点通向自身的路径</li>
        <li>优点：层次数据模型的结构清晰简单、操作简单、查询效率较高，且提供了较好的数据完整性支持</li>
        <li>缺点：数据结构呆板缺乏灵活性（只能表示1:n的关系，不能表示多对多的复杂关系）、数据操作时插入和删除的操作限制太多（删除父节点就会删除子节点）、查询节点需要知道父节点缺乏快速定位机制</li>
    </div>

    <div class="ltable showimg">网状模型概述</div>
    <div class="img">
        <li>1. 网状模型的基本结构是一个没有任何限制的有向图，它可以看做是放松层次模型的约束性的一种扩展</li>
        <li>2. 可以存在两个或多个节点没有父节点</li>
        <li>3. 允许单个节点存在多于一个父节点</li>
        <li>优点：可以方便地表示现实中复杂的关系、数据操作限制性少而灵活、使用指针后数据操作效率高</li>
        <li>缺点：结构复杂不利于维护和重建、需要存储数据指针使得数据量变大和修改不方便（同时需要修改指针）</li>
    </div>
</ul>

<div class="dt">关系模型和关系型数据库</div>
<ul>
    <div class="ltable showimg">关系模型概述</div>
    <div class="img">
        <li>1. 关系模型的基本结构是二维表，无论是实体还是实体之间的联系都被映射为二维表</li>
        <li>2. 关系模型使用不同表数据之间的关系来表示多对多的关系</li>
        <li>3. 关系必须是规范化的关系，即每个属性是不可分割的实体，不允许表中表的存在</li>
    </div>

    <div class="ltable showimg">关系模型特点</div>
    <div class="img">
        <table>
            <tr>
                <th>特点</th><th>说明</th>
            </tr>
            <tr>
                <td>结构简单</td>
                <td>关系数据模型是一些表格的框架，实体的属性是表格中列的条目，实体之间的关系也是通过表格的公共属性表示，结构简单明了</td>
            </tr>
            <tr>
                <td>结构灵活</td>
                <td>满足所有布尔逻辑运算和数学运算规则形成的查询要求</td>
            </tr>
            <tr>
                <td>数据独立性、安全性高</td>
                <td>关系数据模型中的存取路径对用户而言是完全隐蔽的，使程序和数据具有高度的独立性，其数据语言的非过程化程度较高</td>
            </tr>
            <tr>
                <td>查询效率低（缺点）</td>
                <td>关系数据模型提供了较高的数据独立性和非过程化的查询功能（查询的时候只需指明数据存在的表和需要的数据所在的列，不用指明具体的查找路径），因此加大了系统的负担</td>
            </tr>
        </table>
        <li>目前应用广泛的关系型数据库主要有Oracle、DB2、SQL_Server、PostgreSQL</li>
    </div>

    <div class="ltable showimg">关系数据模型的三种约束完整性</div>
    <div class="img">
        <table>
            <tr>
                <th>完整性</th><th>说明</th>
            </tr>
            <tr>
                <td>实体完整性</td>
                <td>实体完整性要求每个表都有唯一标识符，每一个表中的主键字段不能为空或者重复的值。</td>
            </tr>
            <tr>
                <td>外键完整性</td>
                <td>参照完整性要求关系中不允许引用不存在的实体。因此可以设定相应的更新删除插入规则来更新参考表</td>
            </tr>
            <tr>
                <td>用户定义完整性</td>
                <td>用户自定义完整性是针对某一具体关系数据库的约束条件，它反映某一具体应用所涉及的数据必须满足的语义要求。
                    也就是说：某个表你可以设置这一列为非空约束、唯一约束、检查约束、主键约束 、外键约束等</td>
            </tr>
        </table>
    </div>

    <div class="ltable showimg">关系模型的两种存储模型-列存储和行存储</div>
    <div class="img">
        <table>
            <tr>
                <th>存储类型</th><th>说明</th><th>优点</th><th>缺点</th>
            </tr>
            <tr>
                <td>行存储</td>
                <td>每一行的数据聚集存储到一起</td>
                <td>因为有联系的数据在一起，insert、update会更快捷</td>
                <td>查询效率低于列存储，查询出的数据有冗余</td>
            </tr>
            <tr>
                <td>列存储</td>
                <td>同一个字段的值聚集存储到一起</td>
                <td>列存储数据列自带行存储索引的属性，查询高效且无冗余数据</td>
                <td>缺乏数据完整性保证，写入效率低</td>
            </tr>
        </table>
    </div>
</ul>

<div class="dt">Nosql数据库</div>
<ul>
    <div class="ltable showimg">Nosql数据库概念</div>
    <div class="img">
        <li>NoSQL最常见的解释是“non-relational”， “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念，泛指非关系型的数据库，区别于关系数据库，它们不保证关系数据的ACID特性（事务的原子性、一致性、独立性、持久性）</li>
    </div>

    <div class="ltable showimg">Nosql数据库类型和概述</div>
    <div class="img">
        <table>
            <tr>
                <th>类型</th><th>典型应用场景</th>
                <th>数据模型</th><th>优点</th><th>缺点</th>
            </tr>
            <tr>
                <td>键值（key-value）</td>
                <td>内容缓存，主要用于处理大量数据的高访问负载，也用于一些日志系统等等</td>
                <td>Key 指向 Value 的键值对，通常用hash table来实现</td>
                <td>查找速度快</td>
                <td>数据无结构化，通常只能被当做字符串或二进制数据</td>
            </tr>
            <tr>
                <td>文档型数据库</td>
                <td>对数据事务安全要求不高、数据逻辑联系不高的数据持久化存储</td>
                <td>基本结构为key 指向 文档的数据结构(典型的MongoDB也有三层结构:数据库、collection、document)</td>
                <td>写入、读取效率高(MongoDB)</td>
                <td>占用空间大，适用场景不够广泛</td>
            </tr>
        </table>
    </div>

    <div class="ltable showimg">Nosql数据库特点</div>
    <div class="img">
        <table>
            <tr>
                <th>特点</th><th>说明</th>
            </tr>
            <tr>
                <td>易扩展</td>
                <td>NoSQL数据库种类繁多，但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系，这样就非常容易扩展。无形之间，在架构的层面上带来了可扩展的能力</td>
            </tr>
            <tr>
                <td>大数据量、高性能</td>
                <td>NoSQL数据库都具有非常高的读写性能，尤其在大数据量下，同样表现优秀。这得益于它的无关系性、结构简单</td>
            </tr>
            <tr>
                <td>数据结构灵活</td>
                <td>NoSQL无须事先为要存储的数据建立字段，随时可以存储自定义的数据格式</td>
            </tr>
        </table>
    </div>
</ul>

<div class="dt">数据库设计</div>
<ul>
    <div class="ltable showimg">数据库设计三原则</div>
    <div class="img">
        <li>数据库每列具有原子性（所有字段都是不可分解的原子），行不可重复，列不可再分</li>
        <li>确保表中的每一列都和主键相关</li>
        <li>确保每列都和主键列直接相关而不是间接相关</li>
    </div>
</ul>

</body>
</html>